$(document).ready(function() {
    verifyLogin();
    loadCursos();
    loadMinistrantes();
    loadCursoEncerrado();
    atualizaGrid();

    $("#filtrar").keyup(function() {
        var index = $(this).parent().index();
        var nth = "#tableAgenda td:nth-child(" + (index + 2).toString() + ")";
        var valor = $(this).val().toUpperCase();
        $("#tableAgenda tbody tr").show();
        $(nth).each(function() {
            if ($(this).text().toUpperCase().indexOf(valor) < 0) {
                $(this).parent().hide();
            }
        });
    });

    $("#filtrar").blur(function() {
        $(this).val("");
    });

});

$('#btnListarTodos').click(function() {
    loadCursoEncerrado();
    atualizaGrid();
});

$('#btnAgendamentoConfirmado').click(function() {
    loadCursoEncerrado();
    filtroStatus("Confirmado");
});

$('#btnAgendamentoCancelado').click(function() {
    loadCursoEncerrado();
    filtroStatus("Cancelado");
});

$('#btnAgendamentoAguardando').click(function() {
    loadCursoEncerrado();
    filtroStatus("Aguardando Confirmação");
});

$('#btnAgendamentoEncerrado').click(function() {
    loadCursoEncerrado();
    filtroStatus("Encerrado");
});

$("#btnNovoAgendamento").click(function() {

    $('#inputId').val("");

    $('#inputDescricao').removeClass('alert-danger');
    $('#selectCurso').removeClass('alert-danger');
    $('#selectMinistrante').removeClass('alert-danger');
    $('#selectStatus').removeClass('alert-danger');
    $('#errorEmpty').hide();
    $("#frmAgendaCurso")[0].reset();
    $("#cadastroAgendaModal").modal("show");
});

function atualizaGrid() {


    $("#tableAgenda").find("tbody tr").remove();
    $("#tableAgenda").find("tbody").append('<tr><td colspan=10><div class="alert alert-info"><img src="img/ajax-loader.gif"> Carregando...</div></td></tr>');

    $.ajax({
        type: "get",
        url: rootUrl + "agendaCurso/listAll",
        dataType: "json",
        success: function(data) {
            $("#tableAgenda").find("tbody tr").remove();
            data.result.forEach(function(agendaCursos) {

                if (agendaCursos.status === 'Confirmado') {

                    row = "<tr class='alert alert-success'>"
                            + "<td>" + agendaCursos.id
                            + "</td><td>" + agendaCursos.descricao.substring(0, 20)
                            + "</td><td>" + agendaCursos.dataInicial
                            + "</td><td>" + agendaCursos.dataFinal
                            + "</td><td>" + agendaCursos.horaInicial
                            + "</td><td>" + agendaCursos.horaFinal
                            + "</td><td>" + agendaCursos.nomeCurso.substring(0, 20)
                            + "</td><td>" + agendaCursos.nomeMinistrante.substring(0, 20)
                            + "</td class='text-right'><td class='text-center'> <a class='btn btn-info btn-xs' href='#' id='edit' data-id='" + agendaCursos.id + "'><span class='glyphicon glyphicon-edit'></span> Editar</a> <a href='#' class='btn btn-danger btn-xs' id='delete' data-id='" + agendaCursos.id + "' data-descricao='" + agendaCursos.descricao + "'><span class='glyphicon glyphicon-remove'></span> Deletar</a>"
                            + "</td></tr>";
                    $("#tableAgenda > tbody:last").append(row);
                }

                if (agendaCursos.status === 'Cancelado') {

                    row = "<tr class='alert alert-danger'>"
                            + "<td>" + agendaCursos.id
                            + "</td><td>" + agendaCursos.descricao.substring(0, 20)
                            + "</td><td>" + agendaCursos.dataInicial
                            + "</td><td>" + agendaCursos.dataFinal
                            + "</td><td>" + agendaCursos.horaInicial
                            + "</td><td>" + agendaCursos.horaFinal
                            + "</td><td>" + agendaCursos.nomeCurso.substring(0, 20)
                            + "</td><td>" + agendaCursos.nomeMinistrante.substring(0, 20)
                            + "</td class='text-right'><td class='text-center'> <a class='btn btn-info btn-xs' href='#' id='edit' data-id='" + agendaCursos.id + "'><span class='glyphicon glyphicon-edit'></span> Editar</a> <a href='#' class='btn btn-danger btn-xs' id='delete' data-id='" + agendaCursos.id + "' data-descricao='" + agendaCursos.descricao + "'><span class='glyphicon glyphicon-remove'></span> Deletar</a>"
                            + "</td></tr>";
                    $("#tableAgenda > tbody:last").append(row);
                }

                if (agendaCursos.status === 'Aguardando Confirmação') {

                    row = "<tr class='alert alert-info'>"
                            + "<td>" + agendaCursos.id
                            + "</td><td>" + agendaCursos.descricao.substring(0, 20)
                            + "</td><td>" + agendaCursos.dataInicial
                            + "</td><td>" + agendaCursos.dataFinal
                            + "</td><td>" + agendaCursos.horaInicial
                            + "</td><td>" + agendaCursos.horaFinal
                            + "</td><td>" + agendaCursos.nomeCurso.substring(0, 20)
                            + "</td><td>" + agendaCursos.nomeMinistrante.substring(0, 20)
                            + "</td class='text-right'><td class='text-center'> <a class='btn btn-info btn-xs' href='#' id='edit' data-id='" + agendaCursos.id + "'><span class='glyphicon glyphicon-edit'></span> Editar</a> <a href='#' class='btn btn-danger btn-xs' id='delete' data-id='" + agendaCursos.id + "' data-descricao='" + agendaCursos.descricao + "'><span class='glyphicon glyphicon-remove'></span> Deletar</a>"
                            + "</td></tr>";
                    $("#tableAgenda > tbody:last").append(row);
                }

                if (agendaCursos.status === 'Encerrado') {

                    row = "<tr class='alert alert-default'>"
                            + "<td>" + agendaCursos.id
                            + "</td><td>" + agendaCursos.descricao.substring(0, 20)
                            + "</td><td>" + agendaCursos.dataInicial
                            + "</td><td>" + agendaCursos.dataFinal
                            + "</td><td>" + agendaCursos.horaInicial
                            + "</td><td>" + agendaCursos.horaFinal
                            + "</td><td>" + agendaCursos.nomeCurso.substring(0, 20)
                            + "</td><td>" + agendaCursos.nomeMinistrante.substring(0, 20)
                            + "</td class='text-right'><td class='text-center'> <a class='btn btn-info btn-xs' href='#' id='edit' data-id='" + agendaCursos.id + "'><span class='glyphicon glyphicon-edit'></span> Editar</a> <a href='#' class='btn btn-danger btn-xs' id='delete' data-id='" + agendaCursos.id + "' data-descricao='" + agendaCursos.descricao + "'><span class='glyphicon glyphicon-remove'></span> Deletar</a>"
                            + "</td></tr>";
                    $("#tableAgenda > tbody:last").append(row);
                }
            });
        }
    });
}


function filtroStatus(status) {


    $("#tableAgenda").find("tbody tr").remove();
    $("#tableAgenda").find("tbody").append('<tr><td colspan=10><div class="alert alert-info"><img src="img/ajax-loader.gif"> Carregando...</div></td></tr>');

    $.ajax({
        type: "get",
        url: rootUrl + "agendaCurso/listStatus/" + status,
        dataType: "json",
        success: function(data) {
            $("#tableAgenda").find("tbody tr").remove();
            data.result.forEach(function(agendaCursos) {

                if (agendaCursos.status === 'Confirmado') {

                    row = "<tr class='alert alert-success'>"
                            + "<td>" + agendaCursos.id
                            + "</td><td>" + agendaCursos.descricao.substring(0, 20)
                            + "</td><td>" + agendaCursos.dataInicial
                            + "</td><td>" + agendaCursos.dataFinal
                            + "</td><td>" + agendaCursos.horaInicial
                            + "</td><td>" + agendaCursos.horaFinal
                            + "</td><td>" + agendaCursos.nomeCurso.substring(0, 20)
                            + "</td><td>" + agendaCursos.nomeMinistrante.substring(0, 20)
                            + "</td class='text-right'><td class='text-center'> <a class='btn btn-info btn-xs' href='#' id='edit' data-id='" + agendaCursos.id + "'><span class='glyphicon glyphicon-edit'></span> Editar</a> <a href='#' class='btn btn-danger btn-xs' id='delete' data-id='" + agendaCursos.id + "' data-descricao='" + agendaCursos.descricao + "'><span class='glyphicon glyphicon-remove'></span> Deletar</a>"
                            + "</td></tr>";
                    $("#tableAgenda > tbody:last").append(row);
                }

                if (agendaCursos.status === 'Cancelado') {

                    row = "<tr class='alert alert-danger'>"
                            + "<td>" + agendaCursos.id
                            + "</td><td>" + agendaCursos.descricao.substring(0, 20)
                            + "</td><td>" + agendaCursos.dataInicial
                            + "</td><td>" + agendaCursos.dataFinal
                            + "</td><td>" + agendaCursos.horaInicial
                            + "</td><td>" + agendaCursos.horaFinal
                            + "</td><td>" + agendaCursos.nomeCurso.substring(0, 20)
                            + "</td><td>" + agendaCursos.nomeMinistrante.substring(0, 20)
                            + "</td class='text-right'><td class='text-center'> <a class='btn btn-info btn-xs' href='#' id='edit' data-id='" + agendaCursos.id + "'><span class='glyphicon glyphicon-edit'></span> Editar</a> <a href='#' class='btn btn-danger btn-xs' id='delete' data-id='" + agendaCursos.id + "' data-descricao='" + agendaCursos.descricao + "'><span class='glyphicon glyphicon-remove'></span> Deletar</a>"
                            + "</td></tr>";
                    $("#tableAgenda > tbody:last").append(row);
                }

                if (agendaCursos.status === 'Aguardando Confirmação') {

                    row = "<tr class='alert alert-info'>"
                            + "<td>" + agendaCursos.id
                            + "</td><td>" + agendaCursos.descricao.substring(0, 20)
                            + "</td><td>" + agendaCursos.dataInicial
                            + "</td><td>" + agendaCursos.dataFinal
                            + "</td><td>" + agendaCursos.horaInicial
                            + "</td><td>" + agendaCursos.horaFinal
                            + "</td><td>" + agendaCursos.nomeCurso.substring(0, 20)
                            + "</td><td>" + agendaCursos.nomeMinistrante.substring(0, 20)
                            + "</td class='text-right'><td class='text-center'> <a class='btn btn-info btn-xs' href='#' id='edit' data-id='" + agendaCursos.id + "'><span class='glyphicon glyphicon-edit'></span> Editar</a> <a href='#' class='btn btn-danger btn-xs' id='delete' data-id='" + agendaCursos.id + "' data-descricao='" + agendaCursos.descricao + "'><span class='glyphicon glyphicon-remove'></span> Deletar</a>"
                            + "</td></tr>";
                    $("#tableAgenda > tbody:last").append(row);
                }

                if (agendaCursos.status === 'Encerrado') {

                    row = "<tr class='alert alert-default'>"
                            + "<td>" + agendaCursos.id
                            + "</td><td>" + agendaCursos.descricao.substring(0, 20)
                            + "</td><td>" + agendaCursos.dataInicial
                            + "</td><td>" + agendaCursos.dataFinal
                            + "</td><td>" + agendaCursos.horaInicial
                            + "</td><td>" + agendaCursos.horaFinal
                            + "</td><td>" + agendaCursos.nomeCurso.substring(0, 20)
                            + "</td><td>" + agendaCursos.nomeMinistrante.substring(0, 20)
                            + "</td class='text-right'><td class='text-center'> <a class='btn btn-info btn-xs' href='#' id='edit' data-id='" + agendaCursos.id + "'><span class='glyphicon glyphicon-edit'></span> Editar</a> <a href='#' class='btn btn-danger btn-xs' id='delete' data-id='" + agendaCursos.id + "' data-descricao='" + agendaCursos.descricao + "'><span class='glyphicon glyphicon-remove'></span> Deletar</a>"
                            + "</td></tr>";
                    $("#tableAgenda > tbody:last").append(row);
                }
            });
        }
    });
}



$('#btnSalvar').click(function() {

    var valido = true;
    if ($('#inputDescricao').val().length === 0)
    {
        valido = false;
        $('#inputDescricao').addClass('alert-danger');
    }
    else
        $('#inputDescricao').removeClass('alert-danger');

    if ($('#selectCurso').val().length === 0)
    {
        valido = false;
        $('#selectCurso').addClass('alert-danger');
    }
    else
        $('#selectCurso').removeClass('alert-danger');

    if ($('#selectMinistrante').val().length === 0)
    {
        valido = false;
        $('#selectMinistrante').addClass('alert-danger');
    }
    else
        $('#selectMinistrante').removeClass('alert-danger');

    if ($('#selectStatus').val().length === 0)
    {
        valido = false;
        $('#selectStatus').addClass('alert-danger');
    }
    else
        $('#selectStatus').removeClass('alert-danger');

    if ($('#inputDataInicial').val().length === 0)
    {
        valido = false;
        $('#inputDataInicial').addClass('alert-danger');
    }
    else
        $('#inputDataInicial').removeClass('alert-danger');

    if ($('#inputDataFinal').val().length === 0)
    {
        valido = false;
        $('#inputDataFinal').addClass('alert-danger');
    }
    else
        $('#inputDataFinal').removeClass('alert-danger');

    if ($('#inputHoraInicial').val().length === 0)
    {
        valido = false;
        $('#inputHoraInicial').addClass('alert-danger');
    }
    else
        $('#inputHoraInicial').removeClass('alert-danger');


    if ($('#inputHoraFinal').val().length === 0)
    {
        valido = false;
        $('#inputHoraFinal').addClass('alert-danger');
    }
    else
        $('#inputHoraFinal').removeClass('alert-danger');



    if (valido)
    {
        travarFormulario();
        agenda = JSON.stringify({
            id: $("#inputId").val(),
            descricao: $("#inputDescricao").val(),
            dataInicial: $("#inputDataInicial").val(),
            dataFinal: $("#inputDataFinal").val(),
            horaInicial: $("#inputHoraInicial").val(),
            horaFinal: $("#inputHoraFinal").val(),
            status: $("#selectStatus").val(),
            obsAgenda: $("#obsAgenda").val(),
            idCurso: $("#selectCurso").val(),
            idMinistrante: $("#selectMinistrante").val()
        });
        $.ajax({
            type: "post",
            url: rootUrl + "agendaCurso/addAgendaCurso",
            dataType: "json",
            data: agenda,
            success: function(result) {
                destravarFormulario();
                $('#cadastroAgendaModal').modal('hide');
                atualizaGrid();
            },
            error: function(result) {
                destravarFormulario();
                $("#errorServer").html(getErrorMessage(result.responseText));
                $("#errorServer").show();
            }
        });
    }
    else
    {
        $("#errorEmpty").show();
        $("#errorServer").hide();
    }

});


function travarFormulario() {
    $("#errorEmpty").hide();
    $("#frmAgendaCurso").hide();
    $("#saveMessage").show();
    $("#btnSalvar").addClass("disabled");
    $("#clearForm").addClass("disabled");
}

function destravarFormulario() {
    $("#errorEmpty").hide();
    $("#errorServer").hide();
    $("#frmAgendaCurso").show();
    $("#saveMessage").hide();
    $("#btnSalvar").removeClass("disabled");
    $("#clearForm").removeClass("disabled");
}


function loadCursos() {//TODO Verificar e implementar
    // $("#loadCategoriasMessage").show();

    $.ajax({
        type: "get",
        dataType: "json",
        url: rootUrl + "cursos/listAll",
        success: function(data) {
            selectCurso = $("#selectCurso");
            selectCurso.find('option').remove().end();
            //$("#loadCategoriasMessage").hide();

            selectCurso.append('<option value="">Selecione Um Curso</option>');
            data.result.forEach(function(curso) {

                //adiciona dados no dropdown de categorias
                selectCurso.append('<option value="' + curso.id + '">' + curso.nome + '</option>');
            });

        },
        error: function(result) {
//            $("#errorLoad").html(getErrorMessage(result.responseText));
//            $("#errorLoad").show();
        }
    });

}

function loadMinistrantes() {//TODO Verificar e implementar
    // $("#loadCategoriasMessage").show();

    $.ajax({
        type: "get",
        dataType: "json",
        url: rootUrl + "ministrante/listAll",
        success: function(data) {
            selectMinistrante = $("#selectMinistrante");
            selectMinistrante.find('option').remove().end();
            //$("#loadCategoriasMessage").hide();

            selectMinistrante.append('<option value="">Selecione Um Ministrante</option>');
            data.result.forEach(function(ministrante) {

                //adiciona dados no dropdown de categorias
                selectMinistrante.append('<option value="' + ministrante.id + '">' + ministrante.nome + '</option>');
            });

        },
        error: function(result) {
//            $("#errorLoad").html(getErrorMessage(result.responseText));
//            $("#errorLoad").show();
        }
    });

}

$("#edit").live("click", function() {

    id = $(this).attr("data-id");

    $("#errorServer").hide();
    $("#errorEmpty").hide();
    $("#errorServer").hide();
    $("#errorEmpty").hide();
    //Limpa marcação da caixa de texto
    $('#inputDescricao').removeClass('alert-danger');
    $('#selectCurso').removeClass('alert-danger');
    $('#selectMinistrante').removeClass('alert-danger');
    $('#selectStatus').removeClass('alert-danger');

    //Limpa mensagem de campo requerido
    $("#frmAgendaCurso")[0].reset();

    $.ajax({
        type: "get",
        url: rootUrl + "agendaCurso/listUpd/" + id,
        dataType: "json",
        success: function(data) {
            agendaCurso = data.result;
            $("#inputId").val(agendaCurso.id);
            $("#inputDescricao").val(agendaCurso.descricao);
            $("#inputDataInicial").val(agendaCurso.dataInicial);
            $("#inputDataFinal").val(agendaCurso.dataFinal);
            $("#inputHoraInicial").val(agendaCurso.horaInicial);
            $("#inputHoraFinal").val(agendaCurso.horaFinal);
            $("#selectStatus").val(agendaCurso.status);
            $("#selectCurso").val(agendaCurso.idCurso);
            $("#selectMinistrante").val(agendaCurso.idMinistrante);
            $("#obsAgenda").val(agendaCurso.observacoes);
            $("#cadastroAgendaModal").modal("show");
        },
        error: function(result) {
            $("#errorServer").html(getErrorMessage(result.responseText));
            $("#errorServer").show();

        }
    });
});

function loadCursoEncerrado() {

    $.ajax({
        type: "post",
        url: rootUrl + "agendaCurso/verificaCursoEncerrado",
        dataType: "json"
    });
}

$("#delete").live("click", function() {

    id = $(this).attr("data-id");
    descricao = $(this).attr("data-descricao");
    
    $('#lblAgendamentoDelete').text(descricao);
    $('#modalConfirmDelete').modal('show');
    
    $('#btnConfirmDelete').click(function() {
        
        $("#deleteMessage").show();
        
        agendamento = JSON.stringify({
            idAgendamento:id
        });
        
        $.ajax({
            type: "post",
            url: rootUrl + "agendaCurso/delete",
            dataType: "json",
            data:agendamento,
            success: function() {
                $("#deleteMessage").hide();
                $('#modalConfirmDelete').modal('hide');
                
                atualizaGrid();
            },
            error: function(result) {
                alert(result.responseText);
            }
        });

    });

});

